import { defineStore } from 'pinia'

export interface Tool {
  id: string
  title: string
  description: string
  icon: string
  component: string
  category?: string
  tags?: string[]
  path?: string
  isFavorite?: boolean
}

export const useToolsStore = defineStore('tools', {
  state: () => ({
    tools: [
      {
        id: 'json-formatter',
        title: 'JSON格式化/压缩工具',
        description: '格式化和验证JSON数据',
        icon: '📋',
        component: 'JsonFormatter',
        category: '开发工具',
        tags: ['JSON', '格式化', '验证'],
      },
      {
        id: 'regex-tester',
        title: '正则测试工具',
        description: '在线测试和验证正则表达式',
        icon: '🔍',
        component: 'RegexTester',
        category: '开发工具',
        tags: ['正则', '测试', '验证'],
      },
      {
        id: 'text-diff',
        title: '文本比对工具',
        description: '比对两段文本之间的差异，高亮显示添加和删除的内容',
        icon: '📝',
        component: 'TextDiff',
        category: '开发工具',
        tags: ['文本', '比对', '差异']
      },
      {
        id: 'code-snippets',
        title: '代码片段管理器',
        description: '保存和管理常用的代码片段，支持多种编程语言',
        icon: '📝',
        component: 'CodeSnippets',
        category: '开发工具',
        tags: ['代码', '片段', '管理']
      },
      {
        id: 'email-validator',
        title: '邮箱校验工具',
        description: '支持单个和批量邮箱格式校验，提供常用邮箱快速填充',
        icon: '✉️',
        component: 'EmailValidator',
        category: '开发工具',
        tags: ['邮箱', '校验', '批量']
      },
    
     
      {
        id: 'base64',
        title: 'Base64转换工具',
        description: '文本和Base64编码之间的转换',
        icon: '🔄',
        component: 'Base64',
        category: '开发工具',
        tags: ['Base64', '编码', '转换']
      },
      {
        id: 'timestamp',
        title: '时间戳转换工具',
        description: '时间戳和日期时间之间的转换',
        icon: '⏰',
        component: 'TimestampConverter',
        category: '开发工具',
        tags: ['时间戳', '日期', '转换']
      },
      {
        id: 'uuid',
        title: 'UUID生成器',
        description: '生成UUID/GUID',
        icon: '🎲',
        component: 'UuidGenerator',
        category: '开发工具',
        tags: ['UUID', 'GUID', '生成器']
      },
      {
        id: 'markdown',
        title: 'Markdown编辑器',
        description: '在线编辑和预览Markdown文档',
        icon: '📝',
        component: 'MarkdownEditor',
        category: '文本工具',
        tags: ['Markdown', '编辑器', '预览']
      },
      {
        id: 'quote',
        title: '每日一句',
        description: '随机展示一句名言或格言',
        icon: '💭',
        component: 'DailyQuote',
        category: '娱乐工具',
        tags: ['名言', '格言', '随机']
      },
      {
        id: 'countdown',
        title: '倒计时工具',
        description: '创建和管理倒计时',
        icon: '⏳',
        component: 'Countdown',
        category: '工具',
        tags: ['倒计时', '时间', '提醒']
      },
      {
        id: 'game-2048',
        title: '2048游戏',
        description: '经典的2048数字游戏',
        icon: '🎮',
        component: 'Game2048',
        category: '娱乐工具',
        tags: ['游戏', '2048', '益智']
      },
      {
        id: 'image-compress',
        title: '图片压缩工具',
        description: '在线压缩图片文件',
        icon: '🖼️',
        component: 'ImageCompress',
        category: '图片工具',
        tags: ['图片', '压缩', '优化']
      },
      {
        id: 'image-to-pdf',
        title: '图片转PDF工具',
        description: '将多张图片合并为一个PDF文件',
        icon: '📄',
        component: 'ImageToPdf',
        category: '图片工具',
        tags: ['图片', 'PDF', '转换']
      },
      {
        id: 'avatar',
        title: '头像生成器',
        description: '生成自定义头像',
        icon: '👤',
        component: 'AvatarGenerator',
        category: '图片工具',
        tags: ['头像', '生成器', '自定义']
      },
      {
        id: 'meme',
        title: '表情包生成器',
        description: '创建自定义表情包',
        icon: '😄',
        component: 'MemeGenerator',
        category: '图片工具',
        tags: ['表情包', '生成器', '图片']
      },
      {
        id: 'quiz',
        title: '小测验工具',
        description: '创建和参与在线测验',
        icon: '📝',
        component: 'QuizTool',
        category: '教育工具',
        tags: ['测验', '问答', '教育']
      },
      // {
      //   id: 'image-to-pdf',
      //   title: '图片转PDF工具',
      //   description: '将多张图片合并为一个PDF文件',
      //   icon: '📄',
      //   component: 'ImageToPdf',
      //   category: '图片工具',
      //   tags: ['图片', 'PDF', '转换']
      // },
      {
        id: 'text-logo',
        title: '文字Logo生成器',
        description: '根据输入文字生成Logo和网站图标',
        icon: '🎨',
        component: 'TextLogo',
        category: '图片工具',
        tags: ['Logo', '图标', '设计']
      },
      {
        id: 'html-preview',
        title: 'HTML实时预览',
        description: '在线编辑和预览HTML代码，支持实时预览和代码复制功能。',
        icon: '🌐',
        component: 'HtmlPreview',
        category: '开发工具',
        tags: ['HTML', '预览', '编辑器']
      },
      {
        id: 'json-to-csv',
        title: 'JSON 转 CSV',
        description: '将 JSON 数组转换为 CSV 格式，支持自定义分隔符、复制和下载',
        icon: '📋',
        component: 'JsonToCsv',
        category: '开发工具',
        tags: ['JSON', 'CSV', '转换', '数据处理']
      },
      {
        id: 'webpage-capture',
        title: '网页保存工具',
        description: '将网页保存为图片或PDF格式，支持自定义网页地址',
        icon: '📸',
        component: 'WebpageCapture',
        category: '开发工具',
        tags: ['网页', '截图', 'PDF', '保存']
      },
      {
        id: 'text-stats',
        title: '文本统计',
        description: '实时统计文本的字符数、单词数、行数和段落数',
        icon: '📊',
        component: 'TextStats',
        category: '开发工具',
        tags: ['文本', '统计', '字数统计']
      },
      {
        id: 'frontend-resources',
        title: '前端资源导航',
        description: '精选前端开发常用网站和文档，包括 Vue、React、TypeScript 等主流框架和工具',
        icon: '📚',
        component: 'FrontendResources',
        category: '前端资源',
        tags: ['前端', '导航', '文档']
      },
      {
        id: 'notepad',
        title: '记事本',
        description: '本地笔记本，支持创建、编辑、删除和搜索笔记',
        icon: '📒',
        component: 'Notepad',
        category: '文本工具',
        tags: ['笔记', '编辑器', '本地存储']
      },
      {
        id: 'todo-list',
        title: '待办事项',
        description: '支持优先级管理的待办事项清单',
        icon: '📒',
        component: 'TodoList',
        category: '效率工具',
        tags: ['待办', '任务', '清单']
      }
    ] as Tool[],
    favorites: JSON.parse(localStorage.getItem('favorites') || '[]') as string[]
  }),

  getters: {
    getAllTools: (state) => state.tools,
    getFavorites: (state) => state.tools.filter(tool => state.favorites.includes(tool.id)),
    getToolById: (state) => (id: string) => {
      return state.tools.find(tool => tool.id === id)
    },

    getToolsByCategory: (state) => (category: string) => {
      return state.tools.filter(tool => tool.category === category)
    },

    getToolsByTag: (state) => (tag: string) => {
      return state.tools.filter(tool => tool.tags?.includes(tag))
    },

    isFavorite: (state) => (toolId: string) => state.favorites.includes(toolId)
  },

  actions: {
    initTools(tools: Tool[]) {
      this.tools = tools
      // 从localStorage加载收藏数据
      const savedFavorites = localStorage.getItem('favorites')
      if (savedFavorites) {
        this.favorites = JSON.parse(savedFavorites)
      }
    },

    toggleFavorite(toolId: string) {
      const index = this.favorites.indexOf(toolId)
      if (index === -1) {
        this.favorites.push(toolId)
      } else {
        this.favorites.splice(index, 1)
      }
      // 保存到localStorage
      localStorage.setItem('favorites', JSON.stringify(this.favorites))
    },
  }
})